package cn.com.shopec.erp.product.service;

import cn.com.shopec.erp.common.page.PageFinder;
import cn.com.shopec.erp.common.page.PageQuery;
import cn.com.shopec.erp.product.entity.Product;
import cn.com.shopec.erp.product.model.BenefitProduct;
import cn.com.shopec.erp.product.vo.ProductHistoryVo;
import cn.com.shopec.erp.product.vo.ProductVo1;

public interface IProductService {

    /**
     * 
     * @Title: addProductHistory
     * @Description: 添加货品历史信息
     * @param productNo
     *            货品编号
     * @throws Exception
     * @throws
     * @author: duhui
     * @date: 2013-5-23上午09:30:48
     */
    public void addProductHistory(ProductHistoryVo productHistoryVo) throws Exception;

    /**
     * 
     * @Title: getPagedProdHistory
     * @Description: 根据查询条件分页查询货品历史信息
     * @param productHistoryVo
     * @param pageQuery
     * @return
     * @throws
     * @author: duhui
     * @date: 2013-5-23上午09:36:18
     */
    public PageFinder<ProductHistoryVo> getPagedProdHistory(ProductHistoryVo productHistoryVo, PageQuery pageQuery);

    /**
     * @Title: getPagedProductListByCommoNo
     * @Description: 根据商品号，取其下货品
     * @param commoNo
     * @param pageQuery
     * @return
     * @throws Exception
     * @throws
     * @author: lule
     * @date: 2013-6-1下午6:02:54
     */
    public PageFinder<ProductVo1> getPagedProductListByProduct(ProductVo1 productVo, PageQuery pageQuery)
            throws Exception;

    /**
     * 根据货品编号逻辑删除货品
     * 
     * @param prodNo
     *            gaoyaxiong 2013-6-6
     * @throws Exception
     */
    void delProduct(String prodNo) throws Exception;

    /**
     * 
     * @Title: validationRepeatBarNO
     * @Description: 根据货品条码验证是否存在相同的货品条码
     * @param prodBarCode
     * @return
     * @throws
     * @author: duhui
     * @date: 2013-6-13下午02:22:40
     */
    public String validationRepeatProdBarCode(String prodBarCode);

    /**
     * 
     * @Title: getPagedProductListByCommoNo
     * @Description: 根据商品编号查询货品信息
     * @param commoNo
     * @param pageQuery
     * @return
     * @throws Exception
     * @throws
     * @author: duhui
     * @date: 2013-6-15下午04:49:46
     */
    public PageFinder<ProductVo1> getPagedProductListByCommoNo(String commoNo, PageQuery pageQuery) throws Exception;

    /**
     * 
     * @Title: getPagedProductListByCommoNo
     * @Description: 根据货品编码和销售类型查询货品信息
     * @param prodNo
     * @param saleType
     * @return
     * @throws
     * @author: duhui
     * @date: 2013-6-22下午02:13:52
     */
    public Product getProductIntfo(String prodNo);
    
    /**
     * 
     * @Title: getPagedProductListByCommoNo
     * @Description: 根据商品编码和销售类型查询货品信息
     * @param prodNo
     * @param saleType
     * @return
     * @throws
     * @author: duhui
     * @date: 2013-6-22下午02:13:52
     */
    public Product getProductIntfoByCommon(String commoNo);

    /**
     * 
     * @Title: getPagedBenefitProductList
     * @Description: 分页查询让利比例设置的货品信息
     * @param benefitProduct
     * @return
     * @throws
     * @author: duhui
     * @date: 2013-7-2下午04:56:34
     */
    public PageFinder<BenefitProduct> getPagedBenefitProductList(BenefitProduct benefitProduct, PageQuery pageQuery)
            throws Exception;

    /**
     * @Title: getPagedProductListByCommoNo
     * @Description: 根据供应商编号获取相应的货品
     * @param commoNo
     * @param pageQuery
     * @return
     * @throws Exception
     * @throws
     * @author: lule
     * @date: 2013-6-1下午6:02:54
     */
    public PageFinder<ProductVo1> getPagedProductListProduct(ProductVo1 productVo, PageQuery pageQuery)
            throws Exception;
}
